package com.farm.template.service;

import com.farm.template.domain.Template;
import com.farm.template.domain.TemplateFile;
import com.farm.template.domain.ex.SysFile;
import com.farm.core.sql.query.DataQuery;
import com.farm.project.domain.ProjectActive;

import java.util.List;
import java.util.Map;

import com.farm.core.auth.domain.LoginUser;

/* *
 *功能：模板文件服务层接口
 *详细：
 *
 *版本：v0.1
 *作者：FarmCode代码工程
 *日期：20150707114057
 *说明：
 */
public interface TemplatefileServiceInter {
	/**
	 * 新增实体管理实体
	 * 
	 * @param entity
	 */
	public TemplateFile insertTemplatefileEntity(TemplateFile entity, LoginUser user);

	/**
	 * 修改实体管理实体
	 * 
	 * @param entity
	 */
	public TemplateFile editTemplatefileEntity(TemplateFile entity, LoginUser user);

	/**
	 * 删除实体管理实体
	 * 
	 * @param entity
	 */
	public void deleteTemplatefileEntity(String id, LoginUser user);

	/**
	 * 获得实体管理实体
	 * 
	 * @param id
	 * @return
	 */
	public TemplateFile getTemplatefileEntity(String id);

	/**
	 * 创建一个基本查询用来查询当前实体管理实体
	 * 
	 * @param query 传入的查询条件封装
	 * @return
	 */
	public DataQuery createTemplatefileSimpleQuery(DataQuery query);

	/**
	 * 获得全部模板文件
	 * 
	 * @param templateid
	 * @return
	 */
	public List<TemplateFile> getTemplateFiles(String templateid);

	/**
	 * 保持文本
	 * 
	 * @param templateFileId
	 * @param text
	 */
	public void saveText(String templateFileId, String text, LoginUser user);

	/**
	 * 修改文件名
	 * 
	 * @param templateFileId
	 * @param name
	 * @param currentUser
	 */
	public void saveName(String templateFileId, String name, LoginUser currentUser);

	/**
	 * 為文件绑定目录
	 * 
	 * @param templateFileId
	 * @param templateDirId
	 * @param currentUser
	 */
	public void bindDir(String templateFileId, String templateDirId, LoginUser currentUser);

	/**
	 * 运行模板获得文件
	 * 
	 * @param file
	 * @param attrs
	 * @return
	 */
	public SysFile runTemplate(TemplateFile file, Map<String, Object> attrs);

	/**
	 * 创建物理文件
	 * 
	 * @param dirPath
	 * @param sfile
	 */
	public String creatSysFile(String dirPath, SysFile sfile,ProjectActive active,Template template);
}